package com.itheima;

import org.junit.Test;

import java.util.*;

public class topic01 {

    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>(); //值，下标

        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(target - nums[i])) {
                return new int[]{map.get(target - nums[i]), i};
            }
            map.put(nums[i], i);
        }

        return null;
    }

    public List<List<String>> topic49(String[] strs) {
        Map<String, List<String>> map = new HashMap<>();

        for (int i = 0; i < strs.length; i++) {
            String s = strs[i];

            char[] chars = s.toCharArray();
            Arrays.sort(chars);
            String key = new String(chars);
            if (map.containsKey(key)) {
                List<String> l = map.get(key);
                l.add(s);
                map.put(key, l);
            }
            else {
                List<String> list = new ArrayList<>();
                list.add(s);
                map.put(key, list);
            }
//            List<String> list = map.getOrDefault(key, new ArrayList<>());
//            list.add(s);
//            map.put(key, list);
        }
        List<List<String>> res = new ArrayList<>();
        for (String s : map.keySet()) {
//            System.out.println(chars);
//            System.out.println(map.get(chars));
            res.add(new ArrayList<>(map.get(s)));

        }
//        for(char[] chars : map.keySet()) {
//            res.add(new ArrayList<>(map.get(chars)));
//        }
        System.out.println(res);
        return res;

    }

//    public int topic128(int[] nums) {
//        Map<Integer, Integer> map = new HashMap<>(); //数，连续次数
//
//        for (int i = 0; i < nums.length; i++) {
////            if(map.containsKey(nums[i] - 1)){
////                map.put(nums[i], map.get(nums[i]) + 1);
////            } else {
////                map.put(nums[i], 1);
////            }
////            int cnt = map.getOrDefault(nums[i] - 1, 0);
//            map.put(nums[i], 1);
//        }
//
//        for (int i = 0; i < nums.length; i++) {
//            int cnt = map.getOrDefault(nums[i] - 1, 0);
//            map.put(nums[i], cnt + 1);
//            if(cnt != 0)
//                map.put(nums[i] - 1, cnt + 1);
//        }
//        System.out.println(map);
//        return Collections.max(map.values());
//    }
//
    public void topic283(int[] nums) {
//        int l = 0;
        int r = 0;

        for(int i = 0; i < nums.length; i++){
            if(nums[i] != 0) {
                nums[r] = nums[i];
                r++;
            }
        }
        for(int i = r; i < nums.length; i++){
            nums[i] = 0;
        }
//        System.out.println(Arrays.toString(nums));
    }

    public int topic42(int[] height) {

        int l = 0;
        int r = height.length - 1;
        int maxL = 0;
        int maxR = 0;
        int result = 0;

        while(l < r){
            if(maxL < height[l]){
                maxL = height[l];
            }
            if(maxR < height[r]){
                maxR = height[r];
            }
            if(maxL <= maxR) {
                result = result + maxL - height[l];
                l++;
            } else {
                result = result + maxR - height[r];
                r--;
            }
        }
//        System.out.println(result);
        return result;

    }

    public int topic560(int[] nums, int k) {

        int pre = 0;
        List<Integer> list = new ArrayList<>();
        int cnt = 0;

        list.add(pre);
        for(int i = 0; i < nums.length; i++){

            if(list.contains(pre - k)){
                cnt++;
            }
            pre += nums[i];
            list.add(pre);

        }
        System.out.println(cnt);
        return cnt;
    }

    @Test
    public void test() {
//        topic49(new String[] {"eat", "tea", "tan", "ate", "nat", "bat"});
//        topic128(new int[]{100,4,200,1,3,2});
//        topic283(new int[]{0,1,0,3,12});
//        topic42(new int[]{0,1,0,2,1,0,1,3,2,1,2,1});
        topic560(new int[]{1,1,1}, 2);
    }
}
